package com.dragon.modules.yuegou.client.wechat_mini.model;

import javax.annotation.Nullable;
import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * <h1>订阅消息</h1>
 * <p>
 * example:<br>
 * 
 * <pre>
 * <code>
 * {
 *   "touser": "OPENID",
 *   "tid": "794",
 *   "page": "index",
 *   "data": {
 *      "结束时间": "2019-10-10 22:00:00",
 *      "拜访状态": "拜访时间即将结束，请尽快出闸离场"
 *   }
 * }
 * </code>
 * </pre>
 * </p>
 * 
 * @author liuwu
 *
 */
public class SubscribeMessage implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * 接收者（用户）的 openid
	 */
	private String toUser;

	/**
	 * 公用模板ID
	 */
	private Integer tid;

	/**
	 * 点击模板卡片后的跳转页面，仅限本小程序内的页面。支持带参数,（示例index?foo=bar）。该字段不填则模板无跳转。
	 */
	@Nullable
	private String page;

	/**
	 * 模板数据
	 */
	private Map<String, String> data;

	/**
	 * 获取接收者（用户）的 openid
	 * 
	 * @return 接收者（用户）的 openid
	 */
	public String getToUser() {
		return toUser;
	}

	/**
	 * 设置接收者（用户）的 openid
	 * 
	 * @param toUser 接收者（用户）的 openid
	 */
	public void setToUser(String toUser) {
		this.toUser = toUser;
	}

	/**
	 * 获取公用模板ID
	 * 
	 * @return 公用模板ID
	 */
	public Integer getTid() {
		return tid;
	}

	/**
	 * 设置公用模板ID
	 * 
	 * @param tid 公用模板ID
	 */
	public void setTid(Integer tid) {
		this.tid = tid;
	}

	/**
	 * 获取点击模板卡片后的跳转页面，仅限本小程序内的页面。支持带参数,（示例index?foo=bar）。该字段不填则模板无跳转。
	 * 
	 * @return 点击模板卡片后的跳转页面
	 */
	public String getPage() {
		return page;
	}

	/**
	 * 设置点击模板卡片后的跳转页面，仅限本小程序内的页面。支持带参数,（示例index?foo=bar）。该字段不填则模板无跳转。
	 * 
	 * @param page 点击模板卡片后的跳转页面
	 */
	public void setPage(String page) {
		this.page = page;
	}

	/**
	 * 获取模板内容，不填则下发空模板。
	 * 
	 * @return 模板内容
	 */
	public Map<String, String> getData() {
		return data;
	}

	/**
	 * 设置模板内容，不填则下发空模板。
	 * 
	 * @param data 模板内容
	 */
	public void setData(Map<String, String> data) {
		this.data = data;
	}

	/**
	 * 设置模板参数
	 * 
	 * @param key   参数key
	 * @param value 参数值
	 */
	public void put(String key, String value) {
		if (data == null) {
			data = new LinkedHashMap<>();
		}
		data.put(key, value);
	}

}
